package task2;

/**
 * 编程获取两个指定字符串中的最大相同子串并打印出来
 * 如：s1="asdafghjka"   s2="aaasdfg"   他们的最大子串为"asd"
 *
 */
public class GetMostSubStringTest {

    public static void main(String[] args) {
        // 获取两个字符串
        String string1 = "asdafghjka";
        String string2 = "aaasdfg";
        // 获取最大相同子串
        String mostSubString = getMostSubString(string1,string2);
        // 输出
        System.out.println(mostSubString);
    }

    private static String getMostSubString(String string1, String string2) {
        // 判断两个字符串的长度，将短的作为string1，长的作为string2
        if (string1.length() >= string2.length()){
            String temp = "";
            temp = string1;
            string1 = string2;
            string2 = temp;
        }
        // 外层循环遍历string1
        for (int i=0;i<string1.length();i++){
            // 内层循环控制当前i下的最大窗口，在该窗口下判断是否有string2中存在的子串
            for (int j = 0,k = string1.length() - i; k != string1.length()+1;j++,k++){
                if (string2.contains(string1.substring(j,k)))
                    return string1.substring(j,k);
            }
        }
        return "";
    }
}
